import request from '@/utils/request'

const api = {
  // 阅读记录相关接口
  getBookRecordList: 'app-api/bookRecord/getBookRecordList',
  queryMyRecentlyReadBooks: 'app-api/bookRecord/queryMyRecentlyReadBooks',
  createBookRecord: 'app-api/bookRecord/createBookRecord',
  deleteBookRecord: 'app-api/bookRecord/deleteBookRecord',
  deleteAllBookRecord: 'app-api/bookRecord/deleteAllBookRecord',
  // 阅读计划相关接口
  getBookReadingProgramList: 'app-api/bookReadingProgram/list',
  getBookReadingProgramDetail: 'app-api/bookReadingProgram/get',
  createBookReadingProgram: 'app-api/bookReadingProgram/create',
  updateBookReadingProgram: 'app-api/bookReadingProgram/update',
  deleteBookReadingProgram: 'app-api/bookReadingProgram/delete',
}

/**
 * 查询所有阅读记录
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {
 *     todayReadingTotal: number,     // 今日阅读数量
 *     thisWeekReadingTotal: number,  // 本周阅读数量
 *     readingDays: number,           // 阅读天数
 *     numberOfDayAdded: number,      // 加入天数
 *     bookRecordList: Array<{        // 阅读记录列表
 *       createTime: number,
 *       updateTime: number,
 *       creator: string,
 *       updater: string,
 *       deleted: boolean,
 *       id: number,
 *       bookId: number,              // 书籍ID
 *       bookName: string,            // 书籍名称
 *       readingTime: string          // 阅读时间 如5分钟前、一小时前
 *     }>
 *   },
 *   msg: string
 * }
 */
export const getBookRecordList = () => {
  return request.get(api.getBookRecordList)
}

export const queryMyRecentlyReadBooks = (type) =>  {
  return request.get(`${api.queryMyRecentlyReadBooks}/${type}`)
}

/**
 * 新增阅读记录
 * @param {Object} data - 阅读记录数据
 * @param {string|number} data.bookId - 书籍ID
 * @param {string} data.bookName - 书籍名称
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const createBookRecord = (data) => {
  return request.post(api.createBookRecord, data)
}

/**
 * 根据ID删除阅读记录
 * @param {string|number} id - 阅读记录ID
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const deleteBookRecord = (id) => {
  return request.delete(`${api.deleteBookRecord}/${id}`)
}

/**
 * 删除所有阅读记录
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const deleteAllBookRecord = () => {
  return request.delete(api.deleteAllBookRecord)
}

/**
 * 查询计划列表
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const getBookReadingProgramList = (type) => {
  return request.get(`${api.getBookReadingProgramList}/${type}`)
}

/**
 * 根据计划ID查询计划详情
 * @param {string|number} id - 计划ID
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {
 *     createTime: number,
 *     updateTime: number,
 *     creator: string,
 *     updater: string,
 *     deleted: boolean,
 *     tenantId: number,
 *     id: number,
 *     planType: number,                    // 计划类型1：绘本集计划 2：自定义计划
 *     learnAFewNewThingsEveryDay: number,  // 每天学习几个新的（数量）
 *     reviewFrequency: string,             // 复习次数
 *     bookShelfIds: string,                // 绘本集ID
 *     plannedDays: number,                 // 计划总天数
 *     bookReadingProgramItemRespVOList: Array<{  // 计划项目列表
 *       createTime: number,
 *       updateTime: number,
 *       creator: string,
 *       updater: string,
 *       deleted: boolean,
 *       tenantId: number,
 *       id: number,
 *       bookIds: string,                   // 书籍ID
 *       days: string,                      // 天数（第几天）
 *       bookReadingProgramId: number,      // 主表ID
 *       bookDO: Array<object>              // 书籍详情列表
 *     }>
 *   },
 *   msg: string
 * }
 */
export const getBookReadingProgramDetail = (id) => {
  return request.get(`${api.getBookReadingProgramDetail}/${id}`)
}

/**
 * 创建计划
 * @param {Object} data - 计划数据
 * @param {number} data.planType - 计划类型（1：绘本集计划 2：自定义计划）
 * @param {number} data.learnAFewNewThingsEveryDay - 每天学习几个新的（数量）
 * @param {number} data.reviewFrequency - 复习次数
 * @param {string} data.bookShelfIds - 绘本集ID（如：1_2）
 * @param {Array} [data.bookReadingProgramItemRespVOList] - 计划项目列表（planType为2时传）
 * @param {string} data.bookReadingProgramItemRespVOList[].bookIds - 书籍ID（如：1_2_3）
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const createBookReadingProgram = (data) => {
  return request.post(api.createBookReadingProgram, data)
}

/**
 * 修改计划
 * @param {Object} data - 计划数据
 * @param {number} data.id - 计划ID
 * @param {number} data.planType - 计划类型
 * @param {string} data.bookShelfIds - 绘本集ID（如：1_2）
 * @param {Array} data.bookReadingProgramItemRespVOList - 计划项目列表
 * @param {number} data.bookReadingProgramItemRespVOList[].id - 子表ID
 * @param {string} data.bookReadingProgramItemRespVOList[].bookIds - 书籍ID（如：1_2）
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const updateBookReadingProgram = (data) => {
  return request.put(api.updateBookReadingProgram, data)
}

/**
 * 删除计划
 * @param {string|number} id - 计划ID
 * @returns {Promise} 响应数据
 * 响应结构：
 * {
 *   code: number,
 *   data: {},
 *   msg: string
 * }
 */
export const deleteBookReadingProgram = (id) => {
  return request.delete(`${api.deleteBookReadingProgram}/${id}`)
}
